// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0

#[test_only]
module sui::vdf_tests {
    use sui::vdf::hash_to_input;
    use sui::vdf::vdf_verify;

    #[test]
    fun test_hash_to_input() {
        let seed = b"seed";
        let expected = x"22267333dc4015f6f9bac320d7415760b2bb130a096d9c16b85d1c6e930a40df14e04f33ff121d2d7f0adad584d6f21790d800415a9b6a5e815270bfa2ab4aa0f40e5988eaaca821b007f863bbae63ffcdc9896fd05c65df02012b47d1d661485d078eb6020a3e6c85d24c9a11dc53b37582344898550a5bae1364c3f79a63f06c877e35190e020e23c668bd1a1e42c293b96d7f139d039c5cbf9792c379758c705b5cd282f9b3bac964f564ae7520dfa7465195428be86aec06e9d350a56cb15c85aad39bcf309fd7fc31a79992ecb842ddba1ad67cd01305d1b2d913877d3557844a21394bac443a329ba18b05f0816aa99f67c6ec88e9027d4978ba0d0e1d94a1d7aa3739443a8d04ca073c368416fdfa9d7e01e6d26a0f9442d5389a923ea9e740baf94c98d8d3fffa15c5cd440be43c9b61a684767798bcf87dcce303734df7491f4b77f4218c20a2b2e3b9dac7971ffdb83ea5141a57885e3be2f3425a21fd6eb2eded45f555fa03797662824e4eeb447c8f90ba9e8a02af9a1911c2e113632f36d42b7530b2694ff0160fada57cfde663c0dc34ab20af0e709656a09bfe8c8cb075b3d7afb6eb131a6fa1b1828fa7ae03c21f247e";
        let actual = hash_to_input(&seed);
        assert!(actual == expected, 0);

        let other_seed = b"other seed";
        let actual = hash_to_input(&other_seed);
        assert!(actual != expected, 1);
    }

    #[test]
    fun test_vdf_verify() {
        let input_seed = x"2ef29e01809053dcfc89e7acad77e13c2bf03b5a9a0bbfea555a1423f1f1ae23";
        let input_bytes = hash_to_input(&input_seed);
        let input_bytes_expected = x"2300b094d4facc4b552df23714f5d09a6ddfde4f0d06163b7fda1fc022ebafa5be196f4d33fc3bce80649d3e64cb6d1497bf65f6b40ffcf5ca3211889b994019cf4dfa8697b0f69a70c5ee14ef438cf0e50b2f93786f506fde02412ad75a441ab785dbe34ce00cb829962e4216f964fb8c53852cc86e0977428322ef7d505e10c37260a9ebeb0cc66ddb59901556bc4a6fa9bc0f9d8159c3319f3a2e1781912000917a12054126a728b46dc6849cda81648e0f34200824a050fd1e01382bf4cfa17019ae2f6f48cfbe6e4ef84e1b00361ed6a4892e4b5db94e8847e0c7050637d668c5cbef08fc60fde9b5d68a02af4c5ed7f7ba99f3b68eb59fa2ea8a282b705124ec5577f166130a0c043823ea1a3fd495643dfbe8d294a9f034d91f8c8e76689a676ebe1ded776bdf7fd1e4050a84b8cead2e6adcd0ae7d12a6e221cb6579eb54911d3ce9739048924f3451c07b203ab811a9506d4d134b335eab6e84c49983f405f3d5b2040c522922e501086c19db5a82a4c7134a7cad5738bc884b382e4b3cfca0521a0e7eacd0d053855dcbb6fa897f122cc2b49df60d4d3424d37a01764b77b65b5f5472365ae3b82a3cb7f9f7a13d4a6ca100c4";
        assert!(input_bytes == input_bytes_expected, 0);

        let output_bytes = x"c001532225cbc82be245b2571c83babcc61ab86234465a7e91e000b14b1a3426cef72a90e5db733523ba5593200c35281b77156eaa978b7ad1c5eac1336ca8e74b1341ae072b9fd620d24ff33590903668ac6d5f53fb6ac32d7c0cd380c790418f68e64505aeb82f40d6e9bcf3642850c440bc458c0465965ce384c7d6d11570d3499e265a38e4e52580e54580fccd28b1dbb9d32a7bca5e59dc9d083c6c6642df20a160da447c78f2695d424984531a1de5a35cd13ba496cf9c0adec749d31d2bbfc001f2d872ba990524a2756e74224f1162bcbceafb2222a2ca19255511f775ceb74a4bc6a36848377201b62b3bc12332781e20097612005d642033866bca926d9242bb2d0a6d305b0e46e9715340b64012271d3fe2c614ab9dca9d2f81a18ba8f49b5b9945fd4b3af743d4c7f2ac0906266ae4c26915bfcbe9ec6a1a17420c442e3cb00422efb70467188e124a56e171004521360f2da80323a2b9d327c43931327a59a711986116333010e743d9ff1c3de811281e5eba84e49c33a78d60e27b065fc101008af0c8fa3fe81a2bbdcdbc3040727f3797121254d48b182ca4a4cd698f0523057b4b223a94253a75842fe823085e8a55b2cb639e4799256f03252ded38eb93a544ca93b89f72c358098b0badedda13de0d3c99c8a33e3b6fa4d894b4031e5400872453086b36cb28d02497c3e2f1e4c6a0b4344b4dc94f4b39481cef8ea05d170f0159f06d7ffcbc99e214d62a1297153a58c41d11dacae5b409b5e6023159897bb773e0a146b7785dc772bc2c61a75aa9b30765027fc1a36bf31113799d2644";
        let proof_bytes = x"0101010180032cf35709e1301d02b40a0dbe3dadfe6ec1eeba8fb8060a1decd0c7a126ea3f27fadcad81435601b0e0abca5c89173ef639e5a88043aa29801e6799e430b509e479b57af981f9ddd48d3a8d5919f99258081557a08270bb441233c78030a01e03ec199b5e3eef5ccc9b1a3d4841cbe4ff529c22a8cd1b1b0075338d864e3890942df6b007d2c3e3a8ef1ce7490c6bbec5372adfcbf8704a1ffc9a69db8d9cdc54762f019036e450e457325eef74b794f3f16ff327d68079a5b9de49163d7323937374f8a785a8f9afe84d6a71b336e4de00f239ee3af1d7604a3985e610e1603bd0e1a4998e19fa0c8920ffd8d61b0a87eeee50ac7c03ff7c4708a34f3bc92fd0103758c954ee34032cee2c78ad8cdc79a35dbc810196b7bf6833e1c45c83b09c0d1b78bc6f8753e10770e7045b08d50b4aa16a75b27a096d5ec1331f1fd0a44e95a8737c20240c90307b5497d3470393c2a00da0649e86d13e820591296c644fc1eef9e7c6ca4967c5e19df3153cd7fbd598c271e11c10397349ddc8cc8452ec";
        assert!(vdf_verify(&input_bytes, &output_bytes, &proof_bytes, 100), 1);

        // Try with output from 101 iterations of the VDF instead
        let other_output_bytes = x"c0013f8fa1bc67da02c43b1dafb2dd576be9c301a6281f938f1ff96718ec46ed102344c5e207464a0a90da7a1a0d5a69b1942048596c1dee5a95199a8a7729616135687c0bcacd2bdcb039af9f362649575ca249f793110280d3f6700c199b1d37f8f58a8ad186d60e45f1ffa675f1a067cf706b110c1134c6b6af97a6920db607fa4eb2bdda161a9527d5503494dd3e3a492bce2289934f16cdda528ad3eee75528de240d60f0174d54c987e6849cc11285dca21eeee1d83645fca10a469f116f81c00105f1f6f5f7fcae2abae809e1f7570b3f7dade7724ef61bfcc96c025e205de5a6b3660b3dfc2a92ba83fa799fd9b509c8962d01400560ff9e2ad8ab8d55c1a072ed70297516e69d08245fbd9eb554796eeb249c7252303089ec9e136c6050ef24d425c14836071a517302721827da07273578215b903093b61ce3307c44dd2b66725129f382e28fe7931082aa06f8896ebb79c2828e63bd978f7a328bd2d324711e41f9e2e1c016fe625fb412526662c3f08ed1333061b12bdf4f71975b4b4a95c10100b52ed14a6b298e95644a48edcad1b15df4ef5fbbf3b8b4b3f61ed5e58bbadd660f23940313610b8c95614beb38e1df0888d7b3198fb07ee8d5c0a6bd8309109871aedd999f72fc73b5d1c0972331c9a77d6d28396ec00ea99c928a17ff418bf535678b1a9a87ce52f90b7d23bad0cf80f51357c92457e6d55b74e224f16bdec90f521b5db6c0d02d9d6b9eee0baceeda3037bc39ceee4112e29beb1815807c30539d85ed54cba13bacf381ff761fc95bcc6537ea26e25b249d3473b1ced85e9a";
        let other_proof_bytes = x"0101010180032cf35709e1301d02b40a0dbe3dadfe6ec1eeba8fb8060a1decd0c7a126ea3f27fadcad81435601b0e0abca5c89173ef639e5a88043aa29801e6799e430b509e479b57af981f9ddd48d3a8d5919f99258081557a08270bb441233c78030a01e03ec199b5e3eef5ccc9b1a3d4841cbe4ff529c22a8cd1b1b0075338d864e3890942df6b007d2c3e3a8ef1ce7490c6bbec5372adfcbf8704a1ffc9a69db8d9cdc54762f019036e450e457325eef74b794f3f16ff327d68079a5b9de49163d7323937374f8a785a8f9afe84d6a71b336e4de00f239ee3af1d7604a3985e610e1603bd0e1a4998e19fa0c8920ffd8d61b0a87eeee50ac7c03ff7c4708a34f3bc92fd0103758c954ee34032cee2c78ad8cdc79a35dbc810196b7bf6833e1c45c83b09c0d1b78bc6f8753e10770e7045b08d50b4aa16a75b27a096d5ec1331f1fd0a44e95a8737c20240c90307b5497d3470393c2a00da0649e86d13e820591296c644fc1eef9e7c6ca4967c5e19df3153cd7fbd598c271e11c10397349ddc8cc8452ec";
        assert!(!vdf_verify(&input_bytes, &other_output_bytes, &other_proof_bytes, 100), 2);
        assert!(vdf_verify(&input_bytes, &other_output_bytes, &other_proof_bytes, 101), 3);

        // Try with valid input, output and proof but from a different group
        let input_bytes_wrong_group = x"01020101800315cb487a5d538968cd37b6643d73e7ae67713bcdd98c98dc10dcb36fec3559a0fc2e2a40f0c7647c2f3cc1890606edf7082614238eedeec8a30c04b69a446a4a52114d4b80333d81373d1b8466e59eb5b5f1088853888a415e522facd50986f533bba84ab4359f9a6d17d29096541d4d90348a23dfc728e4fe44bf359fc137ba22754df67873ff7ab5cb183cf2958c672b88528c093f5a769b68676d1f3ba1337e5ae5e71db52f2fe3f9aab1ea709e8f65a10f72e88e5213553feee9a3812dd4f29285016bce48b47f15f69510bd915c688464d644d4e0d674bbe3593b4e200a5a08c8d58598e2017b753fdfebddf7f77ee70c9c5e890eaf3cbe8e8e936592030594833dea222df12ed4113b3bb92792c2b3025f4c04debb9699a3633b0dd20271f9151e9b07ed2709c654e167a97cddcb906a85d91309a667512260cf4093307b7a79aca85c4f550fdaedac4e19314152fe86990f6ed44492a55b48369cb188dc887d190faa0c65deb2ede6884f91cec9c200023ad63e27fed4b8de961a7ddb";
        let output_bytes_wrong_group = x"c0012b597511d34d7f852a3608f1b3bd2333005ad09b096d6bb181e39a8695aabc321e6f78f1a0e4792f37eca51d02610eb77a5513059fd00856bf69d64ccb0d09fe967f07f65e9b3dd236c08d219ae7e78551d1100e468c580944459daa31f0a6a5a2c6371c9976118d4ef845f4a84e79501d6f501ceb1b107099089fa985a837fdf7acae642ac211c9b44f9ca7b5d62fc0b04041ccf509a5bd7bda5b0a2c96508ae2a8b61cf75d2b3cc5724b813b9627fc42e2bb6f4fb2e20866aa4f5baa2478c2c001110d9be2918a11962e3349d4f6a2f2b5c1511ea754422ea325d54e42f1e255283c0fe652f62fc16b7affcbe6733afada9b1d748716c85fbca6b959d008afcacad3759c1b37a8485c39acead2e3db0b7eb325e7c331fde1c4148f286cae1c7723db4e3310246917ca22d5dc2bdc67b55386b3f45ffe30b6cf09b4352ddf3e70a51814ebb6079186e2592f1c15f585a247c6de175fa4a7876c89e2ec1c40c04cc066bc1ba2f3527673e3054905cd0b7a478c4a145da5bb015ed27b4b9a710ea88fc101010316392f7a0d2aee08c80b1811e9e3a9700fc976caba58179ab6e046f28b8d0d73f5a68fc298516932296215717354b67384aca578d351f930dd8c34488231633db1694082550cc3eb87ca9ed938dfe9fe811fd4afbcec9ebf823f7e885167dbf9f90b2afc793a44fd055932842f1fcd08618fcfba8121c8279a920b8dbd681be7781c593212aa03208d3f61d181567e5dfe374ed7221f7c10392288c990296b581dba86610e3c31063151b0204c6c4c8e2f90fbbab10f493ecf7c89a879a537";
        let proof_bytes_wrong_group = x"0101010180032b9690f4baa712d19a6f6cc87ae7cf5ccee2779bb31931b821b966dfd86ab341f85c5481e18ec8f85e7983120c0ddbee104c28471ddbdd914618096d3488d494a4229a9700667b026e7a3708cdcb3d6b6be21110a7111482bca45f59aa130dea67775095686b3f34da2fa5212ca83a9b20691447bf8e51c9fc897e6b3f826f7444ea9becf0e7fef56b963079e52b18ce5710a518127eb4ed36d0ceda3e774266fcb5cbce3b6a5e5fc7f35563d4e13d1ecb421ee5d11ca426aa7fddd347025ba9e5250a02d79c9168fe2bed2a217b22b8d108c9ac89a9c1ace977c6b2769c4014b41191ab0b31c402f6ea7fbfd7bbefeefdce1938bd121d5e797d1d1d26cb24060b29067bd4445be25da8227677724f25856604be9809bd772d3346c6761ba404e3f22a3d360fda4e138ca9c2cf52f9bb9720d50bb226134ccea244c19e812660f6f4f35950b89eaa1fb5db589c326282a5fd0d321edda889254ab6906d396311b910fa321f5418cbbd65dbcd109f239d9384000475ac7c4ffda971bd2c34fbb6";
        assert!(!vdf_verify(&input_bytes_wrong_group, &output_bytes_wrong_group, &proof_bytes_wrong_group, 100), 4);
    }

    #[test]
    #[expected_failure(abort_code = sui::vdf::EInvalidInput)]
    fun test_vdf_verify_with_invalid_input() {
        let invalid_input_bytes = x"abcd";
        let output_bytes = x"c001503be6eff558a40ba145da5aa9d1270367f32cde44c1601846cdd3d0911abce8ab6adb6b82682b45107545e9ae1efca44dd6f3ba8d95a687652b94f479f6b1a37156c44194d6bc5f266098b75251b12de6fa67de6aea14250c0481694db5f24db5e3c89da3354aafc10c4bd0371f9a175d1b5b193190c4c1089ed7a95dc07f1ce29021b55f3aaa7eb65725d61277f0996b783c005a919ba121d81f211f63d188ac525056235504fe4858765dc6498362d98e8540287a0ff78424c18de53abe46c0014f847bd49f599960fe3c3b7cfc571cd854c7d21b0e9984070f7e168c872a6e6480d8fd37d30602f57a237b83ae961e6a4acb94b78c32d04f06058bda037d6ad313c81f823db25c53c265b02a29008f727f95010c82b0cf8745e77a7f4000dac929ba83a4594482b4e6ff59c93a78df5c816f244914329c145e288fd3fd4800a1cc2df23f386112e569608e6de40ee65fe870960b4e3fee4bb188d8db0dd5df3c2384eb24a797eb20cf8524d563663ccde866a405e2713cfafdb760e50c77a797c10100a31fc5ca0a91aa788d5f5df17a1433f1a0e6e4da440ce935b1b48dc6868c8fc00d7ee725ce21797a6c4440af02570466081479e99eee1a5b509a3e1ac2e000ed386c35d9fadd130df2a292fa5f9aa2c195c48c9d11e58ac98c8dbd2169721ed2d2c9f5544de17deeaa9655360ed7baa46820f5e008af1e3f028d819dee3fee50ab55b266385dfc8f65f7f0c1b6149e5295bfefb83b14db3a30b2cefd1495ba4e5ae39d2b729f9644fc28764d03243fad3e61145ed83cbf2708b60c0b7cac7148";
        let proof_bytes = x"0101010180032cf35709e1301d02b40a0dbe3dadfe6ec1eeba8fb8060a1decd0c7a126ea3f27fadcad81435601b0e0abca5c89173ef639e5a88043aa29801e6799e430b509e479b57af981f9ddd48d3a8d5919f99258081557a08270bb441233c78030a01e03ec199b5e3eef5ccc9b1a3d4841cbe4ff529c22a8cd1b1b0075338d864e3890942df6b007d2c3e3a8ef1ce7490c6bbec5372adfcbf8704a1ffc9a69db8d9cdc54762f019036e450e457325eef74b794f3f16ff327d68079a5b9de49163d7323937374f8a785a8f9afe84d6a71b336e4de00f239ee3af1d7604a3985e610e1603bd0e1a4998e19fa0c8920ffd8d61b0a87eeee50ac7c03ff7c4708a34f3bc92fd0103758c954ee34032cee2c78ad8cdc79a35dbc810196b7bf6833e1c45c83b09c0d1b78bc6f8753e10770e7045b08d50b4aa16a75b27a096d5ec1331f1fd0a44e95a8737c20240c90307b5497d3470393c2a00da0649e86d13e820591296c644fc1eef9e7c6ca4967c5e19df3153cd7fbd598c271e11c10397349ddc8cc8452ec";
        let _ = vdf_verify(&invalid_input_bytes, &output_bytes, &proof_bytes, 100);
    }

    #[test]
    #[expected_failure(abort_code = sui::vdf::EInvalidInput)]
    fun test_vdf_verify_with_invalid_output() {
        let input_bytes = x"bc01009ed67199c633da0faa75a8ed0ff5c3ae7c278c79aad85953cdf86d57101b1ee941e5239b7d614e5b16eac269c460f16d57a12c75b52c48fac643a1c4918fab86805fe08fcd6b38093a17143cca7550fd018b8bc6871fb441b406bec7a7f3a61c3b2a5aa9daca5f9a6fa474b270688de643323de1acc8073a3418bc1681a614c1abb5fa56b61a7d6df4260547c9f613c5f0dbd7cb91a478ac94b1cce6b1f4784dc161ec3c85bf02cf99fd460b0b25a44d1990dacd1fe7a43b797611ea0210645fef3905f7e1accf97bd3b868a8a99d4a1a546e5a55e20f343fc2724829f1770591b50a73c93ec9b8c01ce1fa6b84eddd5a7ddd077110e21b8e058bf2fed2592a5449db177ec0e32595b20bda5779c2f346b01df8c0d277d9d3a7fe0a04e67b210be60334efdadb7abc5ac001b71509c2d487d9d26443527c1b8b02dfcffc50ef98020f569cdf6fffca5870b0e502493fceee35b79eed99e2c758a0aff4c86b2af0dd223e270ecf84eb7405fe35a9e37d6b080efa3c59806c2ceffa82f38502f9d37b6c298cf07534347cd9ee436406784bd7e0a57d380dd3923ddca13d86f3b2c83a135f125f9429a6802247a0e926b54144d74e4e8f66f0303cdc91843ce7e1fb9c6276c000512c0709c7fbfde2b80e66db77222447ef6b4da4a698e011c6de95ad88738aea465c158288a54223c7f7152577cc48691af57e2631e3224b7c94e2a4c5034db35bbf9e807753fa51da8798bf63b7e6ebd857ca4cf01fcab7a33e63fa89eb386e2ef98046c44491bdf8d62ede2af4ab79ccac88e404abb649b92f49c9f9abcf2216bb628e96400a75a66c12b6ff1c6dae498dd4183ad989921ebc6a1be73127741333671eb72cd25eabc69fecc3c50da06b4a3af155264d4e39e8c681b8c5555d4cab748ed15d119527820e01854fa203c2deba3a67620d47733919e8c71d659e60e86db69905ebdc4dbeda67f77291c2202b2116a05f227f963a97eb8c87104b2df349f01f251aa22bbd41541998ce755309b98d9597d7ee26b6acaef1869885c775e6ceb710c36c07e401e17a8ccb838e33f64e43e4db3491b5cef6e800c4e494610ab81a8b489263b86976160d7d0106cab79bf2a2fce5b01e8f9d1fb069a98e814c94f10d9917b7ea27209bc822b35741f56a9aeadb75a7eae6a8cbd7df08e079db64fd48655f42c24c14bb6c72e744206a3e15deee45cab74d589deb1055e0e69fe508a2ef356dc4e2caaaf89f44a520722490374eade8573429d0d6d16e3c681853f96759cc6e3ea3aaad55284282abd40686281ff944c6a507086143cf76d0f7f93b486d552fa4698656cff8a325fea84943333645b29ee11c99555b2076a09466f6e602db663e1bd45c523a12a7fcd2328d5139d14b25561b94f62f69d436c5d4c92b01ae3a91baa1b5781bd0bf2156e1d0042ab2cbc6e10f4389868fc41d05b19bfe3dfcaacb0478b3dce887da8435c9d49f457fd54e129133e5ce87c39acb9206213daec867fca35e6b612c523fb9fba959542a777ea74";
        let invalid_output_bytes = x"abcd";
        let proof_bytes = x"0101010180032cf35709e1301d02b40a0dbe3dadfe6ec1eeba8fb8060a1decd0c7a126ea3f27fadcad81435601b0e0abca5c89173ef639e5a88043aa29801e6799e430b509e479b57af981f9ddd48d3a8d5919f99258081557a08270bb441233c78030a01e03ec199b5e3eef5ccc9b1a3d4841cbe4ff529c22a8cd1b1b0075338d864e3890942df6b007d2c3e3a8ef1ce7490c6bbec5372adfcbf8704a1ffc9a69db8d9cdc54762f019036e450e457325eef74b794f3f16ff327d68079a5b9de49163d7323937374f8a785a8f9afe84d6a71b336e4de00f239ee3af1d7604a3985e610e1603bd0e1a4998e19fa0c8920ffd8d61b0a87eeee50ac7c03ff7c4708a34f3bc92fd0103758c954ee34032cee2c78ad8cdc79a35dbc810196b7bf6833e1c45c83b09c0d1b78bc6f8753e10770e7045b08d50b4aa16a75b27a096d5ec1331f1fd0a44e95a8737c20240c90307b5497d3470393c2a00da0649e86d13e820591296c644fc1eef9e7c6ca4967c5e19df3153cd7fbd598c271e11c10397349ddc8cc8452ec";
        let _ = vdf_verify(&input_bytes, &invalid_output_bytes, &proof_bytes, 100);
    }

    #[test]
    #[expected_failure(abort_code = sui::vdf::EInvalidInput)]
    fun test_vdf_verify_with_invalid_proof() {
        let input_bytes = x"bc01009ed67199c633da0faa75a8ed0ff5c3ae7c278c79aad85953cdf86d57101b1ee941e5239b7d614e5b16eac269c460f16d57a12c75b52c48fac643a1c4918fab86805fe08fcd6b38093a17143cca7550fd018b8bc6871fb441b406bec7a7f3a61c3b2a5aa9daca5f9a6fa474b270688de643323de1acc8073a3418bc1681a614c1abb5fa56b61a7d6df4260547c9f613c5f0dbd7cb91a478ac94b1cce6b1f4784dc161ec3c85bf02cf99fd460b0b25a44d1990dacd1fe7a43b797611ea0210645fef3905f7e1accf97bd3b868a8a99d4a1a546e5a55e20f343fc2724829f1770591b50a73c93ec9b8c01ce1fa6b84eddd5a7ddd077110e21b8e058bf2fed2592a5449db177ec0e32595b20bda5779c2f346b01df8c0d277d9d3a7fe0a04e67b210be60334efdadb7abc5ac001b71509c2d487d9d26443527c1b8b02dfcffc50ef98020f569cdf6fffca5870b0e502493fceee35b79eed99e2c758a0aff4c86b2af0dd223e270ecf84eb7405fe35a9e37d6b080efa3c59806c2ceffa82f38502f9d37b6c298cf07534347cd9ee436406784bd7e0a57d380dd3923ddca13d86f3b2c83a135f125f9429a6802247a0e926b54144d74e4e8f66f0303cdc91843ce7e1fb9c6276c000512c0709c7fbfde2b80e66db77222447ef6b4da4a698e011c6de95ad88738aea465c158288a54223c7f7152577cc48691af57e2631e3224b7c94e2a4c5034db35bbf9e807753fa51da8798bf63b7e6ebd857ca4cf01fcab7a33e63fa89eb386e2ef98046c44491bdf8d62ede2af4ab79ccac88e404abb649b92f49c9f9abcf2216bb628e96400a75a66c12b6ff1c6dae498dd4183ad989921ebc6a1be73127741333671eb72cd25eabc69fecc3c50da06b4a3af155264d4e39e8c681b8c5555d4cab748ed15d119527820e01854fa203c2deba3a67620d47733919e8c71d659e60e86db69905ebdc4dbeda67f77291c2202b2116a05f227f963a97eb8c87104b2df349f01f251aa22bbd41541998ce755309b98d9597d7ee26b6acaef1869885c775e6ceb710c36c07e401e17a8ccb838e33f64e43e4db3491b5cef6e800c4e494610ab81a8b489263b86976160d7d0106cab79bf2a2fce5b01e8f9d1fb069a98e814c94f10d9917b7ea27209bc822b35741f56a9aeadb75a7eae6a8cbd7df08e079db64fd48655f42c24c14bb6c72e744206a3e15deee45cab74d589deb1055e0e69fe508a2ef356dc4e2caaaf89f44a520722490374eade8573429d0d6d16e3c681853f96759cc6e3ea3aaad55284282abd40686281ff944c6a507086143cf76d0f7f93b486d552fa4698656cff8a325fea84943333645b29ee11c99555b2076a09466f6e602db663e1bd45c523a12a7fcd2328d5139d14b25561b94f62f69d436c5d4c92b01ae3a91baa1b5781bd0bf2156e1d0042ab2cbc6e10f4389868fc41d05b19bfe3dfcaacb0478b3dce887da8435c9d49f457fd54e129133e5ce87c39acb9206213daec867fca35e6b612c523fb9fba959542a777ea74";
        let output_bytes = x"c001503be6eff558a40ba145da5aa9d1270367f32cde44c1601846cdd3d0911abce8ab6adb6b82682b45107545e9ae1efca44dd6f3ba8d95a687652b94f479f6b1a37156c44194d6bc5f266098b75251b12de6fa67de6aea14250c0481694db5f24db5e3c89da3354aafc10c4bd0371f9a175d1b5b193190c4c1089ed7a95dc07f1ce29021b55f3aaa7eb65725d61277f0996b783c005a919ba121d81f211f63d188ac525056235504fe4858765dc6498362d98e8540287a0ff78424c18de53abe46c0014f847bd49f599960fe3c3b7cfc571cd854c7d21b0e9984070f7e168c872a6e6480d8fd37d30602f57a237b83ae961e6a4acb94b78c32d04f06058bda037d6ad313c81f823db25c53c265b02a29008f727f95010c82b0cf8745e77a7f4000dac929ba83a4594482b4e6ff59c93a78df5c816f244914329c145e288fd3fd4800a1cc2df23f386112e569608e6de40ee65fe870960b4e3fee4bb188d8db0dd5df3c2384eb24a797eb20cf8524d563663ccde866a405e2713cfafdb760e50c77a797c10100a31fc5ca0a91aa788d5f5df17a1433f1a0e6e4da440ce935b1b48dc6868c8fc00d7ee725ce21797a6c4440af02570466081479e99eee1a5b509a3e1ac2e000ed386c35d9fadd130df2a292fa5f9aa2c195c48c9d11e58ac98c8dbd2169721ed2d2c9f5544de17deeaa9655360ed7baa46820f5e008af1e3f028d819dee3fee50ab55b266385dfc8f65f7f0c1b6149e5295bfefb83b14db3a30b2cefd1495ba4e5ae39d2b729f9644fc28764d03243fad3e61145ed83cbf2708b60c0b7cac7148";
        let invalid_proof_bytes = x"abcd";
        let _ = vdf_verify(&input_bytes, &output_bytes, &invalid_proof_bytes, 100);
    }
}
